#ifndef DEALMSGPACKET_H
#define DEALMSGPACKET_H

#include <QObject>
#include <QtWebSockets/QWebSocket>
#include <queue>
#include <memory>
#include <mutex>
#include <condition_variable>
#include <thread>
#include <QVariantMap>
#include <QVariantList>
#include <QTimer>
#include <QMap>
#include <QList>
#include "../beans/dealpicturethread.h"
#include "json.h"
#include "qrencode.h"
#include "commonstruct.h"

class QWebSocket;
class MySocket : public QObject
{
    Q_OBJECT
public:
    MySocket(QObject* parent = nullptr);
    ~MySocket();

signals:
    void onReConnect();
    void onConnected();
    void onDisConnected();
    void onTextOccured(const QString& msg);
    void onBinaryOccured(const QByteArray& msg);

public slots:
    void doConnected();
    void doDisConnected();
    void doTextOccured(const QString& msg);
    void doBinaryOccured(const QByteArray& msg);

public:
    QWebSocket* getSocket();

private:
    QWebSocket* socket = nullptr;
};

/********************************************************/

class DoDataThread : public QObject{
    Q_OBJECT
public:
    DoDataThread(QObject* parent = nullptr);
    ~DoDataThread();

protected:
    void run();

public:
   void sendMsg(const QString& msg,const bool& isGetPicInfo = false);

private:
    void __initSlots();

signals:
    void onMessage(QString msg);
    void onCallBack(const QString& msg);
    void onCallBinaryBack(const QByteArray& msg);
    void onNetConnect(const bool&);
    void onReConnect();
    void stopTimer();
    void startTimer();

public slots:
    void onTextMessageReceived(QString);
    void doMessage(QString msg);
    void doBinaryMessage(const QByteArray&);
    void doReConnect();

private:
    std::thread* m_Thread = nullptr;
    std::queue<QString> m_MsgQueue;           //前端页面的消息队列
    std::mutex m_Mutex;
    std::condition_variable m_Condition;
    bool is_Waiting = true;                   //标记线程是还在运行

    QThread* m_SocketThread = nullptr;
    QTimer* m_Timer = nullptr;
    MySocket* m_MySocket = nullptr;
    QUrl m_ServerUrl = QUrl("");
};

/**************************************************************/

/**
 * @brief The MsgControl class
 * 接受页面的数据和处理服务端的返回数据的控制类
 */
class SystemConfig;
class MsgControl : public QObject
{
    Q_OBJECT

    Q_PROPERTY(int startBtnStatus READ getStartBtnStatus WRITE setStartBtnStatus NOTIFY startBtnStatusChanged)
    Q_PROPERTY(QVariantMap errorMsg  READ getErrorMsg WRITE setErrorMsg NOTIFY errorMsgChanged)
    Q_PROPERTY(bool netConnected READ getNetConnected NOTIFY netConnectedChanged)
    Q_PROPERTY(QVariantList fileList READ getFileList WRITE setFileList NOTIFY fileListChanged)
    Q_PROPERTY(QVariantMap picPropertyMap  READ getPicPropertyMap WRITE setPicPropertyMap NOTIFY picPropertyMapChanged)
    Q_PROPERTY(double printProcess READ getPrintProcess WRITE setPrintProcess NOTIFY printProcessChanged)
    Q_PROPERTY(QString printTip READ getPrintTip WRITE setPrintTip NOTIFY printTipChanged)
    Q_PROPERTY(bool printBarShow READ getPrintBarShow WRITE setPrintBarShow NOTIFY printBarShowChanged)
    Q_PROPERTY(bool selectPicture READ getSelectPicture WRITE setSelectPicture NOTIFY selectPictureChanged)
    Q_PROPERTY(QVariantMap stateTypeMap  READ getStateTypeMap WRITE setStateTypeMap NOTIFY stateTypeMapChanged)
    Q_PROPERTY(bool showTapPic READ getShowTapPic WRITE setShowTapPic NOTIFY showTapPicChanged)
    Q_PROPERTY(QVariantList paiBanFileList READ getPaiBanFileList WRITE setPaiBanFileList NOTIFY paiBanFileListChanged)
    //设置每个图片的分数
    Q_PROPERTY(QVariantList copy WRITE setCopy)
    //设置每个图片的间距
    Q_PROPERTY(double spacing READ getSpacing WRITE setSpacing NOTIFY spacingChanged)
    Q_PROPERTY(QVariantList widthHeight WRITE setWidthHeight)
    Q_PROPERTY(QString paperWidth READ getPaperWidth WRITE setPaperWidth NOTIFY paperWidthChanged)
    Q_PROPERTY(QString paperHeight READ getPaperHeight WRITE setPaperHeight NOTIFY paperHeightChanged)

    Q_PROPERTY(QVariantList operatList WRITE setOperatList)
    Q_PROPERTY(bool startGenerateBigPic WRITE setStartGenerateBigPic)
    Q_PROPERTY(QVariantMap boardVersion READ getBoardVersion WRITE setBoardVersion NOTIFY boardVersionChanged)
    Q_PROPERTY(QString sizeUnit READ getSizeUnit WRITE setSizeUnit NOTIFY sizeUnitChanged)
    //打印设置
    Q_PROPERTY(QVariantList printDriverSetting WRITE setPrintDriverSetting)
    //喷头校准
    Q_PROPERTY(QVariantList penTouCanShu WRITE setPenTouCanShu)
    //温控板卡设置
    Q_PROPERTY(QVariantList tempBoardPara WRITE setTempBoardPara)
    //台板设置
    Q_PROPERTY(QVariantList taiBanPara WRITE setTaiBanPara)
    //台板类型和distance
    Q_PROPERTY(QVariantList taiBanTypeDis WRITE settaiBanTypeDis)
    //调整齿轮比像素
    Q_PROPERTY(int adjustPixel WRITE setAdjustPixel)
    //基准校色
    Q_PROPERTY(QVariantList jiZhunTaoSe WRITE setJiZhunTaoSe)
    //组内套色
    Q_PROPERTY(QVariantList zuNeiTaoSe WRITE setZuNeiTaoSe)
    //打印纸张类型选择
    Q_PROPERTY(QVariantList printPaperStyle READ getPrintPaperStyle \
               WRITE setPrintPaperStyle NOTIFY printPaperStyleChanged)
    //打印质量
    Q_PROPERTY(QVariantMap qualityMode READ getQualityMode \
               WRITE setQualityMode NOTIFY qualityModeChanged)
    //回写打印纸张和曲线类型
    Q_PROPERTY(QVariantList paperAndEcolor WRITE setPaperAndEcolor)
    //白墨设置
    Q_PROPERTY(QVariantList inkSetting READ getInkSetting \
               WRITE setInkSetting NOTIFY inkSettingChanged)
    //设置开启排版
    Q_PROPERTY(bool bingPack READ getBingPack \
               WRITE setBingPack NOTIFY bingPackChanged)

public:
    explicit MsgControl(QObject *parent = nullptr);
    ~MsgControl();

    enum class ColorsEnum{
        COLOR = 0, //单色
        COLOR_16,
        COLOR_256,
        COLOR_GRAY,
        COLOR_RGB,
        COLOR_RGB_O,
        COLOR_CYMK,
        COLOR_CYMK_O,
        COLOR_LAB,
        COLOR_LAB_O
    };

    enum class PrintButtonEnum{
        nozzleState = 0,
        verticalCalibration,
        stepCalibration,
        horizontalCalibration,
        sameColorCalibration,
        colorCalibration,
        whiteColorCalibration,
        doubleDirCalibration,
        GearRatioCalibration
    };

public:
    Q_INVOKABLE void publishMsg(const QString& msg);
    Q_INVOKABLE void motorMoveForward(bool);       //向前
    Q_INVOKABLE void motorMoveBack(bool);          //向后
    Q_INVOKABLE void motorMoveLeft(bool);          //向左
    Q_INVOKABLE void motorMoveRight(bool);         //向右
    Q_INVOKABLE void motorMoveOrigin();            //回原点
    Q_INVOKABLE void startPrint(int);              //开始打印
    Q_INVOKABLE void pausePrint();                 //暂停打印
    Q_INVOKABLE void resumePrint();                //继续打印
    Q_INVOKABLE void cancelPrint();                //停止打印
    Q_INVOKABLE void clean(const int& mode);       //清洗（0 正常 | 1 强劲）
    Q_INVOKABLE void testPrint();                  //测试打印
    Q_INVOKABLE void getPrintState();              //获取打印状态
    Q_INVOKABLE void getUSB_FileDir();             //获取挂载USB的文件
    Q_INVOKABLE void getWifi_FileDir();            //获取挂载Wifi的文件
    Q_INVOKABLE void getForward_DirInfo();         //获取上一级目录
    Q_INVOKABLE void getNext_DirInfo(const QString& name);     //获取下一级目录下的信息
    Q_INVOKABLE void getWifiQrenCode();                        //获取扫描wifi上传二维码
    Q_INVOKABLE void removeExistedPrintWorks();                //清空已经存在的任务
    Q_INVOKABLE void addFilesToList(const QString& filePath,const bool& ret);   //添加文件队列
    Q_INVOKABLE void touchPrintFiles(const QString& filePath);  //点击打印文件
    Q_INVOKABLE void deleteFileFromDisk();                      //从磁盘删除文件
    Q_INVOKABLE void preAddPrintWork(const int& btnStatus);     //添加打印任务 预前处理
    Q_INVOKABLE void getRipSetting();
    Q_INVOKABLE void setRipSetting(const Json::Value &);        //设置与rip相关的参数值
    Q_INVOKABLE void setPageChange(const int&);
    Q_INVOKABLE void sysexit();                                 //用于软件升级，系统退出
    Q_INVOKABLE QString getSoftWareVersion();                   //设置软件版本
    Q_INVOKABLE void getRip_BoardVersion();                     //获取ripserver 以及板卡的信息
    Q_INVOKABLE void printSetting();                            //打印硬件参数配置
    Q_INVOKABLE void setFileSelected(const QString & file, const bool &b); //记录文件是否被选中
    Q_INVOKABLE bool getFileSelected(const QString & file);
    Q_INVOKABLE void clearSeletedFileList();                    //清空选择的文件列表
    Q_INVOKABLE void addPaiBanFileList();                       //添加排版文件列表
    Q_INVOKABLE void deletePaiBanFileList(const int& row);      //添加排版文件列表
    Q_INVOKABLE QString getIconUUId(const QString&);
    Q_INVOKABLE void setLanguage(const QString& type);
    Q_INVOKABLE void importEvcolor(const QString& path);
    Q_INVOKABLE void exportEvcolor(const QString&);
    Q_INVOKABLE void setRecoverButtonState(const bool& flag);
    Q_INVOKABLE int getSytemCPU_Counts();                       //获取操作系统CPU核心数
    Q_INVOKABLE void setRIPThreads(const int&);                 //设置RIP的线程数
    Q_INVOKABLE int getRIPThreads();
    Q_INVOKABLE void setUnit(const QString& unit);              //设置单位
    Q_INVOKABLE QString getSizeInitUnit();                      //获取初始单位制度
    Q_INVOKABLE QString getInitLanguage();                      //获取初始语言

    Q_INVOKABLE void saveConfigureFile(const int&); //保存设置参数
    Q_INVOKABLE void getPrintDriverSetting();       //获取打印设置参数
    Q_INVOKABLE void savePrintDriverSetting();      //保存打印设置参数
    Q_INVOKABLE void getPenTouJiaoZhun();           //获取喷头校准参数
    Q_INVOKABLE void savaPenTouJiaoZhun();          //保存喷头校准参数
    Q_INVOKABLE void saveTempBoardSetting();        //保存温控版参数
    Q_INVOKABLE void getTempBoardSetting();         //获取温控版参数
    Q_INVOKABLE void getTaiBanSetting();            //获取台板参数
    Q_INVOKABLE void saveTaiBanSetting();           //保存台板参数
    Q_INVOKABLE void addTaiBan();
    Q_INVOKABLE void deleteTaiban(const int& index);
    Q_INVOKABLE void excuteTaiBan();                //执行台版操作
    Q_INVOKABLE void nozzleCalibrationTest(const int& dir, const int& button);  //喷头校准测试图打印
    Q_INVOKABLE void injectInk(const QString& during);  //注墨
    Q_INVOKABLE void stopInjectInk();                   //停止注墨
    Q_INVOKABLE void cutPaperByHand();                  //手动切纸
    Q_INVOKABLE void powerOffMachine();                 //关机
    Q_INVOKABLE int getCurrentPicIndex();               //获取排版显示页面操作的图片index索引

private:
    void powerOnSelfCheck();                //开机自检
    void getRipMode();                      //获取板卡打印rip模式列表
    void getRipModeNameAlias();             //获取曲线别名
    void getSmallPic();                     //请求获取缩略图
    void addPrintWork();                    //添加打印任务
    void initPrintState();                  //初始化打印状态
    QString colorsEnum2Str(const int&);
    QString printButtonEnum2Str(const int&);
    void setSoftLanguage(const int& type);  //设置软件的语言
    void getPicinfo(const QString& filePath, const QString& uuid); //获取待打印图片实际信息
    QVariantList buildRealPackListView(QVariantList& list, double& pH); //构建最终的排版文件列表视图

private:
    void dealCallStartPrint(const Json::Value&);        //处理开始打印
    void dealCallPausePrint(const Json::Value&);        //处理暂停打印
    void dealCallResumePrint(const Json::Value&);       //处理继续打印
    void dealCallCancelPrint(const Json::Value&);       //处理取消打印
    void dealCallClean(const Json::Value&);             //处理清洗
    void dealCallTest(const Json::Value&);              //处理测试打印
    void dealCallGoorg(const Json::Value&);             //处理小车回原点
    void dealCallRootDirList(const Json::Value&);       //获取根目录盘符文件以及文件夹
    //void deaCallGetFileList(const Json::Value&);        //处理获取文件列表
    void dealCallGetRipMode(const Json::Value&);        //处理获取的ripmode列表
    void dealCallGetRipModeNameAlias(const Json::Value&); //处理获取的ripmode别名
    void dealCallPicinfo(const Json::Value&);           //处理待打印图片实际信息
    void dealCallAddPrintList(const Json::Value&);      //处理添加打印任务
    //void dealCallPrintWorkList(const Json::Value&);     //处理服务端返回的任务列表
    void dealCallRemoveExistedPrintWorks(const Json::Value&); //处理已经存在的打印任务
    //void dealCallSetTaskConfig(const Json::Value&);     //处理修改当前打印的参数
    void dealCallPrintProgress(const Json::Value&);     //处理打印进度
    void dealCallRipProgress(const Json::Value&);       //处理rip状态反馈
    void dealCallWarnMessage(const Json::Value&);       //处理错误信息反馈
    void dealCallDeleteFiles(const Json::Value&);       //处理删除文件
    void dealCallPrintState(const Json::Value&);        //处理打印文件的状态
    void dealCallUploadFiles(const Json::Value&);       //处理上传文件的反馈（文件上传之后，通知更新界面更新）
    void dealCallGetRipSetting(const Json::Value&);     //处理获取的rip相关的属性值
    void dealCallSetRipSetting(const Json::Value&);     //处理设置rip相关的属性值
    void dealCallGetBoardVersion(const Json::Value&);   //处理获取的板卡信息
    void dealCallImportEvcolor(const Json::Value&);     //处理曲线导入
    void dealCallExportEvcolor(const Json::Value&);     //处理曲线导出
    void dealCallSelfCheck(const Json::Value&);         //处理开机自检
    void dealCallGetWifiQrenCode(const Json::Value&);   //处理获取的扫描的二维码

    /************************/
    void dealCallGetPrintSetting(const Json::Value&);
    void dealCallSavePrintSetting(const Json::Value&);
    void dealCallGetPenTouJiaoZhun(const Json::Value&);
    void dealCallSetPenTouJiaoZhun(const Json::Value&);
    void dealCallSaveTempBoardSetting(const Json::Value&);
    void dealCallGetTempBoardSetting(const Json::Value&);
    void dealCallNozzleCalibrationTest(const Json::Value&);
    void dealCallInjectInk(const Json::Value&);
    void dealCallStopInjectInk(const Json::Value&);
    void dealCallCutPaperByHand(const Json::Value&);
    void dealCallGetTaiBanSetting(const Json::Value&);
    void dealCallSaveTaiBanSetting(const Json::Value&);
    void dealCallExcuteTaiBan(const Json::Value&);

signals:
    void onCurrentFolderPicInfo(const QString& path);
    void onAddImage(SmallPic_Struct*);
    void smallPicRefresh();
    void onGetBigPic(QVariantList&);              //开始进行排版转换
    void onSetPaperWidth(const QString &);
    void setFinalBigPicSize(const int&,const int&);
    void onBingPack(const bool&);
    void swipePagesSilder(const bool&);           //设置页面是否可以进行滑动
    void recoverButtonState(const bool& flag);
    void changeGetFileBtn(const int&);
    void changeLanguage(const QString& type);     //切换语言
    void clearVertMotorRate();                    //清除齿轮比参数
    void selfCheckResult(const bool&);            //自检信号
    void inkInjectState(bool b,QString msg);      //注墨的状态和信息
    void stopInkInjectState(bool b,QString m);    //停止注墨的状态和信息
    void ripPrintInfo(int item,int progress,QString msg);
    void refreshCodeImage(const QString& wifiName,const QString& password);
    void onDealPackList(const QVariantList& list,const double& viewHeight); //将固定排版后的文件列表转发处理
    void refreshPackView(const QVariantList& list); //更新排版页面视图
    void onPicGap(const double&);                   //设置自动排版的图片间距
    void antiCollisionState(const QVariantMap&);    //防撞信息
    void cutPaper(const bool& b,const QString& msg);
    void taiBanList(const QVariantList& platforms,const QVariantList& platformsInfo,const float& distance);
    void taiBanState(const bool& b);

    void showWaitDia(const bool&);
    void pageChanged(const int& page);
    void startBtnStatusChanged();
    void errorMsgChanged();
    void netConnectedChanged();
    void fileListChanged();
    void curFileslistChanged();
    void taskFilesListChanged();
    void curPrintFileChanged();
    void picPropertyMapChanged();
    void printProcessChanged();
    void printTipChanged();
    void printBarShowChanged();
    void printConfigChanged();
    void selectPictureChanged();
    void printCopiesChanged();
    void stateTypeMapChanged();
    void showTapPicChanged();
    void paiBanFileListChanged();
    void paperWidthChanged();
    void paperHeightChanged();
    void spacingChanged();
    void boardVersionChanged();
    void sizeUnitChanged();
    void qualityModeChanged();
    void printPaperStyleChanged();
    void inkSettingChanged();
    void bingPackChanged();

    //打印设置参数
    void sendPrintSetting(const QVariantMap& map);
    void sendPrintJiaoZhun(const QVariantMap& map);
    void sendTempBoardPara(const QVariantMap& map);

public slots:
    void doCallBack(const QString& msg);            //获取服务端返回的消息
    void doCallBinaryBack(const QByteArray& data);  //获取服务端缩略图bateArray
    void doNetConnect(const bool&);                 //socket client连接状态
    void doDealCompleted1();                        //缩略图生成完毕

    void doDealAutoPackCompleted(); //处理自动排版
    void doDealFixedPackCompleted();//处理固定排版

    void doPicCompleted(const std::map<QString,QString>&);
    void doUpdateUI_BigPicSize(const int& w,const int& h);
    void doCheckPackPaper(const bool&);

    // 处理排版结果
    void doDealBingPack(MtPackTransformRet *,const QList<int>& jobIndex);
    void doDealAutoPackList(const QVariantList& list);

    //自动排版最终高度
    void doDealPaperHeight(const double&);

public:
    int getStartBtnStatus();
    void setStartBtnStatus(int);

    QVariantMap getErrorMsg();
    void setErrorMsg(const QVariantMap&);

    bool getNetConnected();

    QVariantList getFileList();
    void setFileList(const QVariantList&);

    QVariantMap getPicPropertyMap();
    void setPicPropertyMap(const QVariantMap&);

    void setPrintProcess(const double&);
    double getPrintProcess();

    void setPrintTip(const QString&);
    QString getPrintTip();

    void setPrintBarShow(const bool&);
    bool getPrintBarShow();

    void setSelectPicture(const bool&);
    bool getSelectPicture();

    void setStateTypeMap(const QVariantMap&);
    QVariantMap getStateTypeMap();

    bool getShowTapPic();
    void setShowTapPic(const bool&);

    QVariantList getPaiBanFileList();
    void setPaiBanFileList(const QVariantList&);
    void setCopy(const QVariantList& list);
    void setSpacing(const double& gap);
    double getSpacing();
    void setWidthHeight(const QVariantList& list);
    void setOperatList(const QVariantList& list);
    void setPaperWidth(const QString& paperWidth);
    QString  getPaperWidth();
    void setPaperHeight(const QString& paperHeight);
    QString  getPaperHeight();
    void setStartGenerateBigPic(const bool&);
    QVariantMap getBoardVersion();
    void setBoardVersion(const QVariantMap&);
    void setSizeUnit(const QString&);
    QString getSizeUnit();
    void setQualityMode(const QVariantMap& list);
    QVariantMap getQualityMode();
    void setPrintPaperStyle(const QVariantList& list);
    QVariantList getPrintPaperStyle();
    void setPaperAndEcolor(const QVariantList& list);

    //白墨设置
    void setInkSetting(const QVariantList& list);
    QVariantList getInkSetting();

    //设置开启排版
    void setBingPack(const bool&);
    bool getBingPack();

    //打印设置
    /****************************************/
    void setPrintDriverSetting(const QVariantList& list);
    void setPenTouCanShu(const QVariantList& list);
    void setAdjustPixel(const int&);
    void setJiZhunTaoSe(const QVariantList& list);
    void setZuNeiTaoSe(const QVariantList& list);
    //温控板参数设置
    void setTempBoardPara(const QVariantList& list);
    void setTaiBanPara(const QVariantList& list);
    void settaiBanTypeDis(const QVariantList& list);

private:
    std::string cppJson_To_String(const Json::Value&);
    //产生二维码
    bool generateWifiCode(const QString value,const QString path = "./");
    bool isProgressiveJPEG(const QString &filePath);

private:
    ///**************************软件、板卡的信息****************************/
    QString m_SoftWareVersion = "V-00-00-0000";  //软件版本信息
    QVariantMap m_BoardVersionMap = {};          //板卡版本信息
    ///**************************软件、板卡的信息****************************/


    ///**************************websocket消息处理线程****************************/
    std::shared_ptr<DoDataThread> m_DoDataThread;  //与printEngine通信的socket消息线程
    ///**************************websocket消息处理线程****************************/


    ///**************************初始化部分打印参数****************************/
    int m_StartBtnStatus = 1;                      //打印按钮的状态
    int m_RIPThreads = 1;                          //RIP的线程数
    double m_PrintProcess = 0;                     //打印进度
    bool m_IsSelectPicture = false;                //打印文件是否被选中
    bool m_NetConnected = false;                   //服务端的连通状态
    bool m_ShowPicture = false;                    //添加任务之后 通知显示信号
    bool m_PrintBarShow  = false;                  //是否开启打印进度条倒计时显示
    bool m_IsCanceled = true;                      //标记是否已经取消完成 （true 已取消）| (false 未取消)
    bool isShowTapPic = false;

    QString m_PrintTip = "";                       //打印提示信息
    QString m_RipModeName = "Normal";              //当前的ripmode模式
    QString m_ThickNess = "Thin";                  //当前的白墨模式
    QString m_Language = "en";                     //初始环境语言
    QString m_PaperWidth = "330";                  //纸张的默认宽度
    QString m_PaperHeight = "0";                   //纸张高度
    QString m_SizeUnit = "mm";                     //纸张单位
    QString m_PrintWorkUUId = "";
    QVariantList m_InkList = {};                   //墨水参数
    bool isAutoBingPack = false;                   //是否开启自动排版
    bool isCheckMachineOutWidth = false;           //检查输出纸张宽幅
    double m_PictureGap = 0;                       //图片间距
    ///**************************初始化部分打印参数****************************/


    ///**************************排版结果*********************************/
    MtPackTransformRet * m_MtPack = nullptr;
    QList<int> m_JobIndex = {};
    int m_CurrentPicIndex = -1;
    ///**************************排版结果*********************************/


    ///**************************文件目录、以及对文件进行操作后记录中间层数据****************************/
    QString m_CurFileFolder = "";                  //记录当前的操作的文件目录
    QVariantList m_FileList = {};                  //当前目录下的文件以及文件夹 USB|Wifi
    QVariantList m_seletePaiBanFileList = {};      //选区的排版文件列表
    QVariantList m_SmallPicFilesList = {};         //当前的目录的下所有文件 "file" 不包括文件夹
    QStringList m_SelectedFilesList = {};          //选择的打印文件列表
    std::map<QString,bool> m_SeletcedFileMap = {}; //标记已经被选中的图片文件
    ///**************************文件目录、以及对文件进行操作后记录中间层数据****************************/


    ///**************************文件属性和md5值****************************/
    QMap<QString,QVariantMap> m_FileInfoMap;       //单个文件的详细信息表
    QMap<QString,QString> m_fileSize;              //<文件路径，文件大小(MB)>
    std::map<QString,QString> m_PicMd5StrMap;      //<文件路径，uuid>
    QVariantMap m_PicpPropertyMap = {{"width",0},{"height",0},{"xdpi",1.0},{"ydpi",1.0}};
    ///**************************文件属性和md5值****************************/


    ///**************************打印曲线、以及曲线别名****************************/
    Json::Value m_RipAliasMap = Json::Value();      //缓存的ripomode别名
    QVariantList m_PrintPaperStyle = {};
    QVariantMap m_QualityModeList = {};             //打印精度的列表
    QMap<QString,QString> m_FinalEcolorLine = {};
    QStringList m_InkStringList = {"color","full","smoothNeg","smooth"};
    QStringList m_InkStyleList = {"invaginate","expand"};
    ///**************************打印曲线、以及曲线别名****************************/


    ///**************************操作反馈的显示信息****************************/
    //服务端返回的异常消息
    QVariantMap m_ErrorMsg = {{"flag",true},{"msg"," "},{"type"," "}};
    ///**************************操作反馈的显示信息****************************/


    ///**************************主界面操作反馈的显示信息****************************/
    //界面上 取消 | 恢复 | 清洗  操作map
    QVariantMap m_SateTypeMap = {{"type","cancel"},{"msg","Canceling"},{"isShow",false}};
    ///**************************主界面操作反馈的显示信息**************************


    ///**************************支持的打印文件类型****************************/
    //显示的文件类型信息
    const QStringList fileSupportList = {"tif","tiff","jpg","jpeg","JPG","JPEG","pdf","png"};
    ///**************************支持的打印文件类型****************************/


    ///**************************打印设置参数****************************/
    int m_PrintMeterial = 1; //打印材料
    int m_PrintJingDu = 2;   //打印精度
    int m_PrintSpeed = 0;    //打印速度 0 高 | 1 中 | 2 低
    double m_PrintTestPaperWidth = 594;
    static int m_PrintJingDuList[6];
    CommonPrintSetPARAM m_PrintSetting;        //打印设置参数
    QNozzleCalibrationPARAM m_NozzlCalibrate;  //喷头校准
    NozzleCalibrationTestImagePARAM m_NozzleCaliTest; //喷头校准测试打印
    TempBoardAllPARAM m_TempBoardAllPARAM;     //温控板
    PlatformsPARAM m_PlatformsPARAM;           //台板
    QVariantList m_PlatformNameList = {};      //台板类型
    QVariantList m_PlatformsList = {};         //台板类型的信息
    ///**************************打印设置参数*****************************/
};

#endif // DEALMSGPACKET_H
